package com.study.demo.injector.component;

import android.app.NotificationManager;
import android.content.Context;

import com.study.demo.DemoApplication;
import com.study.demo.api.forum.ForumApi;
import com.study.demo.api.game.GameApi;
import com.study.demo.components.okhttp.OkHttpHelper;
import com.study.demo.components.storage.UserStorage;
import com.study.demo.greendao.CustomThreadDao;
import com.study.demo.greendao.ForumDao;
import com.study.demo.greendao.ImageCacheDao;
import com.study.demo.greendao.ReadThreadDao;
import com.study.demo.greendao.ThreadInfoDao;
import com.study.demo.greendao.ThreadReplyDao;
import com.study.demo.greendao.UserDao;
import com.study.demo.injector.module.ApiModule;
import com.study.demo.injector.module.ApplicationModule;
import com.study.demo.injector.module.DBModule;
import com.study.demo.ui.BaseActivity;
import com.study.demo.widget.HuPuWebView;

import org.greenrobot.eventbus.EventBus;

import javax.inject.Singleton;

import dagger.Component;

/**
 * Created by shangsong on 17-3-2.
 */
@Singleton
@Component(modules = {ApplicationModule.class, DBModule.class, ApiModule.class})
public interface ApplicationComponent {
    Context getApplicationContext();

    ForumApi getForumApi();

    UserStorage getUserStorage();

    EventBus getEventBus();

    GameApi getGameApi();

    UserDao getUserDao();

    ForumDao getForumDao();

    CustomThreadDao getThreadDao();

    ThreadInfoDao getThreadInfoDao();

    ThreadReplyDao getThreadReplyDao();

    ReadThreadDao getReadThreadDao();

    ImageCacheDao getImageCacheDao();

    OkHttpHelper getOkHttpHelper();

    NotificationManager getNotificationManager();

    void inject(DemoApplication application);

    void inject(BaseActivity mBaseActivity);

    void inject(HuPuWebView mHupuWebView);
}
